﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;

namespace QLHPHP
{
    public partial class QuyDinhControl : UserControl
    {
        /// <summary>
        /// Cập nhật thông tin các đối tượng miễn giảm học phí
        /// </summary>
        public QuyDinhControl()
        {
            InitializeComponent();
            

        }

        private AppCommands _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public AppCommands Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    AppCommands oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(AppCommands oldValue, AppCommands newValue)
        {
            if (newValue != null)
            {
                buttonDong.Command = newValue.QuyDinhCommands.Cancel;
                //buttonDong.Command = newValue.DanhSachSVCommands.Cancel;
            }
            else
            {
                buttonDong.Command = null;
                //buttonDong.Command = null;
            }
        }

        private void BindingDT()
        {
            txtMaDoiTuong.DataBindings.Clear();
            txtMaDoiTuong.DataBindings.Add("Text", dgvDTMG.DataSource, "MaDoiTuong");

            txtTenDoiTuong.DataBindings.Clear();
            txtTenDoiTuong.DataBindings.Add("Text", dgvDTMG.DataSource, "TenDoiTuong");

            txtTiLeGiam.DataBindings.Clear();
            txtTiLeGiam.DataBindings.Add("Text", dgvDTMG.DataSource, "TiLeGiamHocPhi");
        }

        private void QuyDinhControl_Load(object sender, EventArgs e)
        {
            dgvDTMG.DataSource = DoiTuong.LayDoiTuong();
            BindingDT();

            dgvTSQD.DataSource = ThamSo.LayThamSo();
            BindingTS();
        }

        private void buttonThemDoiTuong_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtMaDoiTuong.Text != "" && txtTiLeGiam.Text != "" && txtTenDoiTuong.Text != "")
                {
                    string id = txtMaDoiTuong.Text;
                    if (DoiTuong.KiemTraTonTai(id) == true)
                    {
                        ToastNotification.Show(this,"Mã đối tượng đã tồn tại!");
                        //MessageBox.Show(" này đã tồn tại vui lòng nhập Id khác", "Lỗi",
                            //MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    string name = txtTenDoiTuong.Text;
                    float ratio = float.Parse(txtTiLeGiam.Text);


                    DoiTuong.TaoDoiTuong(id, name, ratio);
                    Form t = this.FindForm();
                    Control[] t2 = t.Controls.Find("dgvDTMG", true);
                    DataGridViewX t3 = (DataGridViewX)t2.GetValue(0);
                    t3.DataSource = DoiTuong.LayDoiTuong();
                    ToastNotification.Show(this,"Thêm đối tượng thành công!");
                    //MessageBox.Show("Thêm đối tượng thành công", "Thông báo",
                           //MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    ToastNotification.Show(this,"Vui lòng nhập đầy đủ các trường!");
                    //MessageBox.Show("Vui lòng nhập đầy đủ các giá trị của đối tượng", "Thông báo",
                           //MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                ToastNotification.Show(this,"Có lỗi trong quá trình nhập liệu!");
                //MessageBox.Show("Có lỗi xảy ra vui lòng kiểm tra lại giá trị nhập liệu!", "Lỗi",
                    //MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void buttonCleanDT_Click(object sender, EventArgs e)
        {
            txtMaDoiTuong.Text = "";
            txtTenDoiTuong.Text = "";
            txtTiLeGiam.Text = "";
        }

        private void buttonXoaDoiTuong_Click(object sender, EventArgs e)
        {
            if (txtMaDoiTuong.Text != "")
            {
                
                if (MessageBoxEx.Show("Bạn có chắc chắn muốn xóa đối tượng này !", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    try
                    {
                        string id = txtMaDoiTuong.Text;

                        DoiTuong.XoaDoiTuong(id);
                        dgvDTMG.DataSource = DoiTuong.LayDoiTuong();
                        BindingDT();
                        ToastNotification.Show(this,"Xóa đối tượng thành công!");
                        //UpdateTextbox();
                        //MessageBox.Show("Xóa đối tượng thành công", "Thông báo", MessageBoxButtons.OK);

                    }
                    catch
                    {
                        ToastNotification.Show(this,"Có lỗi xảy ra!");
                        //MessageBox.Show("Có lỗi xảy ra!!", "Lỗi",
                            //MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                ToastNotification.Show(this,"Vui lòng chọn đối tượng cần xóa!");
                //MessageBox.Show("Vui lòng chọn đối tượng muốn xóa!", "Thông báo", MessageBoxButtons.OK);
            }
        }

        private void buttonSuaDoiTuong_Click(object sender, EventArgs e)
        {
            if (txtMaDoiTuong.Text != "" && txtTenDoiTuong.Text != "" && txtTiLeGiam.Text != "")
            {
                try
                {
                    string id = txtMaDoiTuong.Text;
                    string name = txtTenDoiTuong.Text;
                    float ratio = float.Parse(txtTiLeGiam.Text);

                    DoiTuong.CapNhatDoiTuong(id, name, ratio);
                    dgvDTMG.DataSource = DoiTuong.LayDoiTuong();
                    //MessageBox.Show("Lưu đối tượng thành công", "Thông báo", MessageBoxButtons.OK);
                    ToastNotification.Show(this, "Sửa đối tượng thành công!");

                }
                catch
                {
                    ToastNotification.Show(this,"Vui lòng kiểm tra các giá trị nhập liệu!");
                    //MessageBox.Show("Có lỗi xảy ra vui lòng kiểm tra lại các giá trị nhập liệu", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                ToastNotification.Show(this,"Không bỏ trống các ô giá trị!");
                //MessageBox.Show("Vui lòng không bỏ trống các ô giá trị!", "Thông báo", MessageBoxButtons.OK);
            }
        }

        private void buttonCapNhatDoiTuong_Click(object sender, EventArgs e)
        {
            dgvDTMG.DataSource = DoiTuong.LayDoiTuong();
            ToastNotification.Show(this,"Cập nhật thành công!");
            BindingDT();
        }

        private void BindingTS()
        {
            txtGiaTri.DataBindings.Clear();
            txtGiaTri.DataBindings.Add("Text", dgvTSQD.DataSource, "GiaTri");

            txtTenThamSo.DataBindings.Clear();
            txtTenThamSo.DataBindings.Add("Text", dgvTSQD.DataSource, "TenThamSo");

        }

        private void buttonCleanTS_Click(object sender, EventArgs e)
        {
            txtGiaTri.Text = "";
            txtTenThamSo.Text = "";
        }

        private void buttonThemThamSo_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtTenThamSo.Text != "" && txtGiaTri.Text != "")
                {
                    String name = txtTenThamSo.Text;
                    float value = float.Parse(txtGiaTri.Text);

                    ThamSo.ThemThamSo(name, value);
                    Form t = this.FindForm();
                    Control[] t2 = t.Controls.Find("dgvTSQD", true);
                    DataGridViewX t3 = (DataGridViewX)t2.GetValue(0);
                    t3.DataSource = ThamSo.LayThamSo();
                    ToastNotification.Show(this,"Thêm thành công!");
                }
                else
                {
                    ToastNotification.Show(this,"Vui lòng nhập đủ thông tin tham số!");
                    //MessageBox.Show("Vui lòng nhập đầy đủ thông tin của tham sô", "Thông báo",
                    //MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                ToastNotification.Show(this,"Vui lòng kiểm tra giá trị nhập liệu!");
                //MessageBox.Show("Có lỗi xảy ra vui lòng kiểm tra lại giá trị nhập liệu!", "Lỗi",
                    //MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void buttonXoaThamSo_Click(object sender, EventArgs e)
        {
            if (txtTenThamSo.Text != "")
            {
                if (MessageBoxEx.Show("Bạn có chắc chắn muốn xóa tham số này !", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    try
                    {
                        string name = dgvTSQD.CurrentRow.Cells[0].Value.ToString();

                        ThamSo.XoaThamSo(name);
                        dgvTSQD.DataSource = ThamSo.LayThamSo();
                        ToastNotification.Show(this,"Xóa tham số thành công!");
                    }
                    catch
                    {
                        ToastNotification.Show(this,"Không thể xóa!Tham số đang được sử dụng");
                        //MessageBox.Show("Tham số này đang được sử dụng nên không thể xóa!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                ToastNotification.Show(this,"Vui lòng chọn tham số cần xóa!");
                //MessageBox.Show("Vui lòng chọn tham số muốn xóa!", "Lỗi",
                    //MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void buttonSuaThamSo_Click(object sender, EventArgs e)
        {
            if (txtTenThamSo.Text != "" && txtGiaTri.Text != "")
            {
                try
                {
                    String name = txtTenThamSo.Text;
                    float value = float.Parse(txtGiaTri.Text);

                    ThamSo.CapNhatThamSo(name, value);
                    dgvTSQD.DataSource = ThamSo.LayThamSo();

                }
                catch
                {
                    ToastNotification.Show(this,"Vui lòng kiểm tra giá trị nhập!");
                    //MessageBox.Show("Có lỗi xảy ra vui lòng kiểm tra lại giá trị nhập liệu!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                ToastNotification.Show(this, "Không được để trống các ô giá trị!");
                //MessageBox.Show("Không được bỏ trống các ô giá trị!", "Thông báo", MessageBoxButtons.OK);
            }
        }

        private void buttonCapNhatThamSo_Click(object sender, EventArgs e)
        {
            dgvTSQD.DataSource = ThamSo.LayThamSo();
            ToastNotification.Show(this,"Cập nhật thành công!");
            BindingTS();
        }
        
    }
}
